package integracion.rest;

import integracion.rest.entities.Ranking;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.apache.log4j.Logger;

import portal.web.businessDelegate.PortalComprasDelegate;

import com.google.gson.Gson;

@Path("/bestSeller")
public class PortalRest {
	
	private static Logger logger = Logger.getLogger(PortalRest.class);
	
	
	@POST
	@Path("/procesar")
	@Consumes(MediaType.APPLICATION_JSON)
	@Produces(MediaType.APPLICATION_JSON)
	public String procesar(String json) {
		//System.out.println("Recibido: "+ json);
		logger.info("Recibiendo informe de Best Sellers");
		
		String mensajeRetorno = "Se actualizaron los rankings";
		String estadoRetorno = "OK";
		try
		{ 
			List<Ranking> rankings = new ArrayList<Ranking>();
			
			Gson gson = new Gson();
			
			RankingList list = gson.fromJson(json, RankingList.class);
			
			
			
			integracion.rest.RankingList.Ranking ranking = null;
			Iterator<integracion.rest.RankingList.Ranking> it = list.getRankings().iterator();
			while(it.hasNext()){
				ranking = it.next();
				Ranking rank = new Ranking();
				rank.setCodigoArticulo(ranking.getCodigoArticulo());
				rank.setPosicion(ranking.getPosicion());
				rankings.add(rank);
			}
			
			PortalComprasDelegate.getInstance().actualizarRankingProductos(rankings);
		}
		catch(Exception ex)
		{ 
			logger.error(ex);			
			
			estadoRetorno = "ERROR";
			mensajeRetorno = "Ocurrio un error al actualizar los rankings";
		}
		
		
		
		return "{\"estado\" : \"" + estadoRetorno + "\",\"mensaje\" : \""+ mensajeRetorno +"\"}";
		
	}

}
